diff --git a/system/drivers/DB_oci8.php b/system/drivers/DB_oci8.php
index 06426dc..2f936da 100644
--- a/system/drivers/DB_oci8.php
+++ b/system/drivers/DB_oci8.php
@@ -43,6 +43,9 @@
 
 class CI_DB_oci8 extends CI_DB {
 
+	// Set "auto commit" by default
+    var $_commit = OCI_COMMIT_ON_SUCCESS;
+
     // need to track statement id and cursor id
     var $stmt_id;
     var $curs_id;
@@ -50,7 +53,7 @@
     // if we use a limit, we will add a field that will
     // throw off num_fields later
     var $limit_used;
-
+    
     /**
      * Non-persistent database connection
      *
@@ -97,7 +100,7 @@
      * @param   string  an SQL query
      * @return  resource
      */
-    function execute($sql)
+    function _execute($sql)
     {
         // oracle must parse the query before it
         // is run, all of the actions with
@@ -105,7 +108,7 @@
         // returned by ociparse        
         $this->_set_stmt_id($sql);
         ocisetprefetch($this->stmt_id, 1000);
-        return @ociexecute($this->stmt_id);
+        return @ociexecute($this->stmt_id, $this->_commit);
     }
     
     /**
@@ -234,6 +237,83 @@
         }
 	}
 
+	// --------------------------------------------------------------------
+
+	/**
+	 * Begin Transaction
+	 * 
+	 * @access	public
+	 * @return	bool		 
+	 */	
+	function trans_begin()
+	{
+		if ( ! $this->trans_enabled)
+		{
+			return TRUE;
+		}
+		
+		// When transactions are nested we only begin/commit/rollback the outermost ones
+		if ($this->_trans_depth > 0)
+		{
+			return TRUE;
+		}
+		
+		$this->_commit = OCI_DEFAULT;
+		return TRUE;
+	}
+
+	// --------------------------------------------------------------------
+
+	/**
+	 * Commit Transaction
+	 * 
+	 * @access	public
+	 * @return	bool		 
+	 */	
+	function trans_commit()
+	{
+		if ( ! $this->trans_enabled)
+		{
+			return TRUE;
+		}
+
+		// When transactions are nested we only begin/commit/rollback the outermost ones
+		if ($this->_trans_depth > 0)
+		{
+			return TRUE;
+		}
+
+		$ret = OCIcommit($this->conn_id);
+		$this->_commit = OCI_COMMIT_ON_SUCCESS;
+		return $ret;
+	}
+
+	// --------------------------------------------------------------------
+
+	/**
+	 * Rollback Transaction
+	 * 
+	 * @access	public
+	 * @return	bool		 
+	 */	
+	function trans_rollback()
+	{
+		if ( ! $this->trans_enabled)
+		{
+			return TRUE;
+		}
+
+		// When transactions are nested we only begin/commit/rollback the outermost ones
+		if ($this->_trans_depth > 0)
+		{
+			return TRUE;
+		}
+
+		$ret = OCIrollback($this->conn_id);
+		$this->_commit = OCI_COMMIT_ON_SUCCESS;
+		return $ret;
+	}
+
     // --------------------------------------------------------------------
 
     /**
